home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 July / macformat-026.iso / mac / Shareware City / Science / µSim 1.0 folder / Libs / FabTaskManager.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-21  |  1.1 KB  |  56 lines  |  [TEXT/MMCC]

  1. #include    "FabTaskManager.h"
  2.  
  3. enum {
  4. fabQueueType = 25
  5. };
  6.  
  7. //static NMUPP sNMUPP = nil;
  8. static QHdr    sQueueHdr = { 0, nil, nil};
  9.  
  10. static void myResponse(TMInfoPtr theTaskPtr);
  11.  
  12. void myResponse(TMInfoPtr theTaskPtr)
  13. {
  14. void (*proc)(long);
  15. long    oldA5, param;
  16.  
  17. oldA5 = SetA5((long)theTaskPtr->savedA5);
  18. (void) Dequeue((QElemPtr)theTaskPtr, &sQueueHdr);
  19. param = theTaskPtr->parameter;
  20. proc = theTaskPtr->tmProc;
  21. DisposePtr((Ptr)theTaskPtr);
  22. proc(param);
  23. (void) SetA5(oldA5);
  24. }
  25.  
  26. void InitTaskManager(void)
  27. {
  28. //sNMUPP = NewNMProc(myResponse);
  29. }
  30.  
  31. void PROCCALLEDATINTERRUPTTIME(TMInfoPtr theTaskPtr, long param)
  32. {
  33. long    oldA5;
  34.  
  35. theTaskPtr->parameter = param;
  36. oldA5 = SetA5((long)theTaskPtr->savedA5);
  37. (void) Enqueue((QElemPtr)theTaskPtr, &sQueueHdr);
  38. (void) SetA5(oldA5);
  39. }
  40.  
  41. void InitTaskRecord(void (*theProc)(long), TMInfoPtr theTaskPtr)
  42. {
  43. theTaskPtr->qType = fabQueueType;
  44. theTaskPtr->tmProc = theProc;
  45. //theTaskPtr->respProc = myResponse;
  46. theTaskPtr->savedA5 = LMGetCurrentA5();
  47. }
  48.  
  49. void CheckCallQueue(void)
  50. {
  51. TMInfoPtr    head;
  52.  
  53. while (head = (TMInfoPtr)sQueueHdr.qHead)
  54.     myResponse(head);
  55. }
  56.